import sys
from python_ai.common.xcommon import *
import tensorflow as tf

tf.random.set_seed(777)

# 1.	使用tensorflow2.0完成以下操作（每小题10分）
# (1)	矩阵创建
# ①	创建一个维度为3*3的全1矩阵
sep('①	创建一个维度为3*3的全1矩阵')
a1 = tf.ones([3, 3], dtype=tf.float32)
tf.print(a1, output_stream=sys.stdout, summarize=-1)

# ②	使用range，创建一个1-9的1阶张量
sep('②	使用range，创建一个1-9的1阶张量')
a2 = tf.range(1, 9+1, dtype=tf.float32)
tf.print(a2, output_stream=sys.stdout, summarize=-1)

# ③	打印上题的维度
sep('③	打印上题的维度')
tf.print(tf.shape(a2), output_stream=sys.stdout, summarize=-1)

# ④	将上题维度修改为3,1,3
sep('④	将上题维度修改为3,1,3')
a4 = tf.reshape(a2, [3, 1, 3])
tf.print(a4, output_stream=sys.stdout, summarize=-1)

# ⑤	使用函数，去除维度中函数1的维度
sep('⑤	使用函数，去除维度中函数1的维度')
a5 = tf.squeeze(a4)
tf.print(a5, output_stream=sys.stdout, summarize=-1)

# (2)	切片及其他
# ①	使用1-9的向量，使用切片，打印3,4,5,6
sep('①	使用1-9的向量，使用切片，打印3,4,5,6')
a21 = a2[2:6]
tf.print(a21, output_stream=sys.stdout, summarize=-1)

# ②	使用transpose将向量变为5,3,4,6
sep('②	使用transpose将向量变为5,3,4,6')
print('这不可能，题目有错！')

# ③	创见一个2行2列的标准正态分布矩阵
sep('③	创见一个2行2列的标准正态分布矩阵')
a23 = tf.random.normal([2, 2], mean=0., stddev=1.)
tf.print(a23, output_stream=sys.stdout, summarize=-1)

# ④	创建一个2行2列的全0矩阵
sep('④	创建一个2行2列的全0矩阵')
a24 = tf.zeros([2, 2])
tf.print(a24, output_stream=sys.stdout, summarize=-1)

# ⑤	将3,4问的结果拼接成一个4行2列的结果
sep('⑤	将3,4问的结果拼接成一个4行2列的结果')
a25 = tf.concat([a23, a24], axis=0)
tf.print(a25, output_stream=sys.stdout, summarize=-1)
